1619F - Let's Play the Hat - CodeForces Solution


brute force constructive algorithms greedy math *2000

Please click on ads to support us..

C++ Code:

#include <cmath>
#include <cstring>
#include <array>
#include <deque>
#include <map>
#include <queue>
#include <set>
#include <vector>
#include <fstream>
#include <iomanip>
#include <iostream>
#include <algorithm>
#include <bitset>
#include <random>
#include <string>
using namespace std;
typedef long long ll;
typedef long double ld;
const int N = 2e5 + 3;
const int INF = 0x3f3f3f3f;
const int mod = 1e9 + 7;
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    int T;
    cin >> T;
    for (int kase = 1; kase <= T; ++kase)
    {
        int n, m, k;
        cin >> n >> m >> k;
        if (kase != 1)
            cout << "\n";
        if (n % m == 0)
        {
            m = n / m;
            for (int i = 0; i < k; ++i)
            {
                for (int j = 1; j <= n; j += m)
                {
                    cout << m;
                    for (int l = 0; l < m; ++l)
                        cout << " " << j + l;
                    cout << "\n";
                }
            }
            continue;
        }
        int rem = n % m, d = n / m;
        for (int i = 0,t=0; i < k ; ++i)
        {
            int man = t%n;
            for (int j = 0; j < rem; ++j)
            {
                cout << d + 1;
                for (int l = 0; l <= d; ++l)
                {
                	man=man%n+1;
                	++t;
                    cout << " " << man;
                }
                cout << "\n";
            }
            for (int j = rem; j < m; ++j)
            {
                cout << d;
                for (int l = 0; l < d; ++l)
                {
                	man=man%n+1;
                    cout << " " << man;
                }
                cout << "\n";
            }
        }
        // for (int i = k / 2; i < k; ++i)
        // {
            // int man = n + 1;
            // for (int j = 0; j < rem; ++j)
            // {
                // cout << d+1<<" "<<j+1+i-k/2;
                // for (int l = 0; l < d; ++l)
                    // cout << " " << --man;
                // cout << "\n";
            // }
            // for (int j = rem; j<m; ++j)
            // {
                // cout << d;
                // for (int l = 0; l < d; ++l)
                    // cout << " " << --man;
                // cout << "\n";
            // }
        // }
    }
    return 0;
}


Comments

Submit
0 Comments
More Questions

1036D - Vasya and Arrays
1139C - Edgy Trees
37A - Towers
353A - Domino
409H - A + B Strikes Back
1262A - Math Problem
158C - Cd and pwd commands
194A - Exams
1673B - A Perfectly Balanced String
1104B - Game with string
1169B - Pairs
1567D - Expression Evaluation Error
78A - Haiku
1287A - Angry Students
1428A - Box is Pull
234B - Reading
581B - Luxurious Houses
1481C - Fence Painting
935A - Fafa and his Company
22A - Second Order Statistics
1720B - Interesting Sum
1720A - Burenka Plays with Fractions
3A - Shortest path of the king
1720C - Corners
574A - Bear and Elections
352B - Jeff and Periods
1244A - Pens and Pencils
1670A - Prof Slim
1189A - Keanu Reeves
678A - Johny Likes Numbers